package cn.wolfcode.trip.base.domain;

import cn.wolfcode.trip.base.util.JSONUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author mycp
 * 游记推荐对象
 */
@Setter
@Getter
public class TravelCommend extends BaseDomain {
    public static final Integer TYPE_WEEK = 1; //每周
    public static final Integer TYPE_MONTH = 2; //每月
    public static final Integer TYPE_STRATEGY = 3; //攻略

    private Long travelId;// 推荐游记id--业务需求不需要插叙游记的具体内部信息

    private String title;// 标题

    private String subTitle;// 副标题

    private String coverUrl;// 包装封面

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date schedule;// 推荐时间安排

    private Integer type = TYPE_WEEK; // 推荐类型, 默认每周推荐

    public String getTypeName(){
        String typeName = "每周推荐";
        if (TYPE_MONTH.equals(type)){
            typeName = "每月推荐";
        } else if (TYPE_STRATEGY.equals(type)){
            typeName = "攻略推荐";
        }
        return typeName;
    }

    public String getJson(){
        Map<String, Object> map = new HashMap<>();
        map.put("title", title);
        map.put("subTitle", subTitle);
        // 这里需要对推荐时间进行格式化处理, 不然前台页面显示时间会是时间戳的形式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        map.put("schedule", sdf.format(schedule));
        map.put("type", type);
        map.put("id", getId());
        map.put("coverUrl", coverUrl);
        map.put("travelId", travelId);
        return JSONUtil.toJSONString(map);
    }

    // 根据需求添加的属性
    private User author;// 推荐游记的作者
    private String placeName; // 旅游目的地

}